#ifndef PERSONAJE_H
#define PERSONAJE_H
#include <iostream>
#include "animatedsprite.h"
#include <vector>

class Personaje: public AnimatedSprite{


private:

	enum Estado{
		CORRIENDO=0,
		SALTANDO=1,	
	};	
	
	Estado estado;

	int vida;

	float gravedad,velocidadSalto, nivelTecho, nivelSuelo;
	
	bool cayendo;//Indica si el personaje está cayendo
	
	std::vector<unsigned> frames[2];//Vector con los frames de cada animación según el estado

 	//carga los frames para cada animación
        void CargarFrames();

        //cambia el estado actual por el parámetro
        void CambiarEstado(Estado e);

        //Cambia la animación según el estado
        void CambiarAnimacion();

	//actualiza el salto
	void ActualizarSalto();	

public:

	//Constructor, llama al constructor de AnimatedSprite
	Personaje(const std::string &filename,unsigned nCols,unsigned nRows,float gravedad,float velSalto,float nivelTecho,float nivelSuelo);
	

	bool vuelta;

	//Actualiza los estados
	void Actualizar(const float &dt);

	//Inicia los procesos de salto
	void Saltar();

	void SetPos(float x);
	
	void SetPosB(float x);	

	void RestarVida();

	int GetVida();

};


#endif
